package com.ssii.www.myproject.repository;

import com.ssii.www.myproject.query.BaseQuery;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;

import java.io.Serializable;
import java.util.List;

/**
 * 提供了一些基础的方法
 * @param <T>
 * @param <ID>
 */
@NoRepositoryBean//不实例化这个接口
public interface BaseRepository<T,ID extends Serializable> extends JpaRepository<T,ID>,JpaSpecificationExecutor<T> {
  /**
   * 根据查询条件进行分页
   * @param baseQuery
   * @return
   */
  Page<T> findPageByQuery(BaseQuery baseQuery);

  /**
   * 根据查询进行列表
   * @param baseQuery
   * @return
   */
  List<T> findByQuery(BaseQuery baseQuery);

  /**
   * 根据jpql查询列表信息
   * @param jpql
   * @param params
   * @return
   */
  List<T> findByJpql(String jpql,Object... params);
}
